<?php

try {
    //abrir a conexão para o servidor MongoDb
    $conn = new MongoClient('localhost');

  
    //acesso ao banco de dados
    $db = $conn->webxd;

    //Acesso as Coleções
    $collectionA = $db->data;
    $collectionB = $db->pagina;
    $collectionC = $db->meta;
    $collectionD = $db->serializacao;
    $collectionE = $db->link;
    $collectionF = $db->dados;
    //TESTE PARA CADA COLEÇÃO
    $conteudoData = "Comida1";
    $conteudoPagina = "Comida2";
    $conteudoMeta = "Comida3";
    $conteudoSerializacao = "Comida4";
    $conteudoLink = "Comida5";
    $conteudoDados = "Comida6";
    $data = 0;
    $pagina = 0;
    $meta = 0;
    $serializacao = 0;
    $link = 0;
    $dados = 0;
//Função de auto increment
        function getNextSequenceData($data){
            global $collectionA;
            
           $retval = $collectionA->findAndModify(
                   array('_id' => $data), array('$inc' => array("seq" => 1)), null, array(
            "new" => true,"upsert" =>true
                )
                   
        );
        return $retval['seq'];
}

    function getNextSequencePagina($pagina){
            global $collectionB;
            
           $retval = $collectionB->findAndModify(
                   array('_id' => $pagina), array('$inc' => array("seq" => 1)), null, array(
            "new" => true,"upsert" =>true
                )
                   
        );
        return $retval['seq'];
}

    function getNextSequenceMeta($meta){
            global $collectionC;
            
           $retval = $collectionC->findAndModify(
                   array('_id' => $meta), array('$inc' => array("seq" => 1)), null, array(
            "new" => true,"upsert" =>true
                )
                   
        );
        return $retval['seq'];
}

    function getNextSequenceSerializacao($serializacao){
            global $collectionD;
            
           $retval = $collectionD->findAndModify(
                   array('_id' => $serializacao), array('$inc' => array("seq" => 1)), null, array(
            "new" => true,"upsert" =>true
                )
                   
        );
        return $retval['seq'];
}

    function getNextSequenceLink($link){
            global $collectionE;
            
           $retval = $collectionE->findAndModify(
                   array('_id' => $link), array('$inc' => array("seq" => 1)), null, array(
            "new" => true,"upsert" =>true
                )
                   
        );
        return $retval['seq'];
}

    function getNextSequenceDados($dados){
            global $collectionF;
            
           $retval = $collectionF->findAndModify(
                   array('_id' => $dados), array('$inc' => array("seq" => 1)), null, array(
            "new" => true,"upsert" =>true
                )
                   
        );
        return $retval['seq'];
}

//Inserindo dados nas variaveis

        $infoData = (object)array('_id' => getNextSequenceData($data),'Dados' => $conteudoData);
        $infoPagina = (object)array('_id' => getNextSequencePagina($pagina),'Dados' => $conteudoPagina);
        $infoMeta = (object)array('_id' => getNextSequenceMeta($meta),'Dados' => $conteudoMeta);
        $infoSerializacao = (object)array('_id' => getNextSequenceSerializacao($serializacao),'Dados' => $conteudoSerializacao);
        $infoLink = (object)array('_id' => getNextSequenceLink($link),'Dados' => $conteudoLink);
        $infoDados = (object)array('_id' => getNextSequenceDados($dados),'Dados' => $conteudoDados);
        
//Inserindo os dados nas coleções        
    $collectionA->insert($infoData);
    $collectionB->insert($infoPagina);
    $collectionC->insert($infoMeta);
    $collectionD->insert($infoSerializacao);
    $collectionE->insert($infoLink);
    $collectionF->insert($infoDados);
    
    //desconectar do servidor
    $conn->close();
} catch (MongoConnectionException $ex) {
    die('Erro ao conectar');
} catch (MongoException $ex) {
    die('Erro: ' . $ex->getMessage());
}
?>